package dominio;
import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import exceptions.JardinZenLleno;

public class JardinZenTest {
	private JardinZen jardinZen;
	private Planta pTer1;
	private Planta pTer2;
	private Planta pAcu1;
	private Planta pAcu2;
	
	
	@Before
	public void setUp(){
		jardinZen = new JardinZen();
		pTer1 = new Planta("plantaTer1", 1, 1, true);
		pTer2 = new Planta("planta", 1, 1, true);
		pAcu1 = new Planta("plantaAcu1", 1, 1, false);
		pAcu2 = new Planta("planta", 1, 1, false);
		jardinZen.setSizeAcuatico(1);
		jardinZen.setSizeTerrestre(1);
		
		jardinZen.agregarPlanta(pTer1, false);
		jardinZen.agregarPlanta(pAcu1, false);
	}
	
	@Test
	public void testAgregarPlanta(){
		assertEquals(pTer1, jardinZen.getJardinTerrestre().get(0));
		assertEquals(pAcu1, jardinZen.getJardinAcuatico().get(0));
	}
	
	@Test
	public void testJardinLleno(){
		assertTrue(jardinZen.jardinLleno(jardinZen.getJardinTerrestre(),jardinZen.getSizeTerrestre()));
		assertTrue(jardinZen.jardinLleno(jardinZen.getJardinAcuatico(),jardinZen.getSizeAcuatico()));
		
		try {
			jardinZen.agregarPlanta(pTer2, false);
			fail();
		} catch (JardinZenLleno e) {
			
		}
		
		try {
			jardinZen.agregarPlanta(pAcu2, false);
			fail();
		} catch (JardinZenLleno e) {
			
		}
		
	}
	
	@Test
	public void testSacarPlanta(){
		assertEquals(pTer1, jardinZen.getPlanta("plantaTer1"));
		assertEquals(pAcu1, jardinZen.getPlanta("plantaAcu1"));
	}
	
	@Test
	public void testMejorarPlanta(){
		assertEquals(1, jardinZen.getPlanta("plantaTer1").getPuntosAtaque());
		assertEquals(1, jardinZen.getPlanta("plantaAcu1").getPuntosDefensa());
		
		jardinZen.mejorarPlanta(pTer1, 1, 0);
		jardinZen.mejorarPlanta(pAcu1, 0, 1);
		
		assertEquals(pTer1.getPuntosAtaque(), 2);
		assertEquals(pAcu1.getPuntosDefensa(), 2);
	}
}
